Глава 8

Операторы CFML

Теперь, когда вы имеете представление о построении страниц с помощью CFML, можно перейти к детальному рассмотрению операторов и выражений языка ColdFusion.

Операторы — это конструкции, выполняющие некоторые действия над одним или несколькими аргументами и выдающие результат. В качестве таких конструкций выступают специальные символы, которые сообщают серверу, что вы хотите выполнить операцию с некоторыми операндами. Типы операций задаются с помощью операторов, а операнды — это переменные, выражения или литералы. Операторы, требующие наличия одного операнда, называются унарными. Одни операторы ставятся перед операндом и называются префиксными, другие — после операнда, их называют постфиксными операторами. Операторы, которые указываются между операндами, называются инфиксными бинарными операторами.

В ColdFusion имеется 22 оператора, которые делятся на четыре различных типа: арифметические, операторы отношения или сравнения, логические операторы и строковый оператор.

Арифметические операторы

Арифметические операторы используются для вычислений. Допустимые операнды должны иметь числовые типы. Список операторов приведен в табл. 8.1.

Таблица 8.1. Арифметические операторы

Оператор

Описание

+,-,*, /

Сложение, вычитание, умножение и деление. В случае деления второй операнд не может быть равен нулю

Унарные арифметические операторы для установки знака числа, положительный (+) или отрицательный (-)

MOD

Оператор вычисления остатка от деления. Результат имеет тот же знак, что и первый операнд. Второй операнд не может быть равен нулю. Например, 10 MOD 3, результат равен 1

Целочисленное деление. Второй операнд не может быть равен нулю. Например, 10 \ 3, результат равен 3

Возведение в степень. Первый операнд не может быть равен нулю. Например, 10 А 3, результат равен 1000

 

Операторы отношения или сравнения

Для того чтобы можно было сравнивать два значения, в ColdFusion имеется набор операторов, описывающих отношения и равенство. Операторы отношения или сравнения возвращают логическое значение True (Истинно) или False (Ложно). Список операторов приведен в табл. 8.2.

Таблица 8.2. Операторы отношения или сравнения

Оператор

Описание

IS

Возвращает True, если значения операндов идентичны

IS NOT

Противоположно is

CONTAINS

Проверяет, содержится ли в первом ( операнде значение второго операнда, и возвращает True -при положительном результате

DOES NOT CONTAIN

ПРОТИВОПОЛОЖНО CONTAINS

GREATER THAN

Проверяет, является ли значение первого операнда больше, чем значение второго операнда, и возвращает True при положительном результате

LESS THAN

ПРОТИВОПОЛОЖНО GREATER THAN

GREATER THAN OR EQUAL TO

Проверяет, является ли значение первого операнда большим или равным значению второго операнда, и возвращает True при положительном результате

LESS THAN OR EQUAL TO

Проверяет, является ли значение первого операнда меньшим или равным значению второго операнда, и возвращает True при положительном результате

Некоторые операторы отношения или сравнения имеют сокращения, которые можно использовать для написания более компактного CFML-кода.

Использование сокращений также избавляет от запоминания длинных названий операторов и сокращает процесс разработки Web-приложения. Список сокращений приведен в табл. 8.3.

Таблица 8.3. Сокращения операторов отношения или сравнения

Оператор

Альтернативные названия

IS

EQUAL, EQ

IS NOT

NOT EQUAL, NEQ

CONTAINS

Отсутствует

DOES NOT CONTAIN

Отсутствует

GREATER THAN

GT

LESS THAN

LT

GREATER THAN OR EQUAL TO

GTE, GE

LESS THAN OR EQUAL TO

LTE, LE

К примеру, в конструкции

<CFSET valTest = 10>

<CFIF valTest GREATER THAN OR EQUAL TO 9>

It is more or equally <CFELSE>

It is less </CFIF>

где — GREATER THAN OR EQUAL то,

можно заменить сокращениями GTE или GE:

<CFIF valTest GTE 9>

или

<CFIF valTest GE 9>

Результат при этом не изменится.

Булевы операторы

Булевы, или логические операторы, список которых приведен ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа. Список операторов приведен в табл. 8.4.

Таблица 8.4. Булевы операторы

Оператор

Описание

NOT AND

OR

XOR EQV IMP

HE. Инвертирует логическое значение. Например, NOT True = False и наоборот

И. Взращает True, если оба операнда имеют значение True, иначе

возвращает False. Например, (True AND True) = True, (True AND False) = False

ИЛИ. Возвращает True, если любой из операндов имеет значение True, иначе возвращает False. Например, (True OR False) = True, (False OR False) = False

Исключающее ИЛИ. Возвращает True, если операнды имеют различные значения, иначе возвращает False. Например, (True XOR True) = False, (False XOR True) = True

Эквивалентность (противоположность XOR). Возвращает True, если операнды эквивалентны, иначе возвращает False. Например, (True EQV True) = True, (False EQV True) = False

Импликация. Возвращает False, только когда первый операнд имеет значение True, а второй — False. Иначе возвращает True

 

Строковый оператор

В эту категорию входит лишь один оператор (табл. 8.5).

Таблица 8.5, Строковый оператор

Оператор

Описание

&

Соединяет символьные выражения. Например, "Анна " &

"Андреевна" возвращает— "Анна Андреевна"

 

Приоритеты операторов

В ColdFusion действует определенный порядок, или приоритет операций. Из элементарной алгебры известно, что операции умножения и деления имеют более высокий приоритет, чем операции сложения и вычитания. В программировании также существует приоритет операций. Ниже приведен список операций в порядке убывания приоритета.

Для явной установки приоритета можно использовать круглые скобки ( ). Вы всегда можете добавить в выражение несколько пар скобок, если у вас есть сомнения по поводу порядка вычислений или вам хочется сделать свой код более читабельным.

Например, пусть необходимо рассчитать осевой момент инерции относительно центральной оси Y для сечения из двух равных прямоугольников. Для определения порядка вычислений скобки расставим следующим образом:

Jy = ( b^3 * ( h - h1) ) /12

Здесь b — ширина сечения, h — внешняя высота сечения; h1 — внутренняя высота сечения.

В следующей главе рассмотрим переменные и типы, используемые в ColdFusion.